package com.jt.controller;

import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import com.jt.vo.EasyUITable;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import com.jt.service.ItemService;
import org.springframework.web.bind.annotation.RestController;

@RestController /* 表示返回数据都是JSON */
@RequestMapping("/item")
public class ItemController {

    @Autowired
    private ItemService itemService;

    /**
     * @param page 页数
     * @param rows 行数
     * @return 返回值: EasyUITable
     * url: http://localhost/item/query?page=1&rows=20
     * 业务: 分页查询商品信息
     */
    @RequestMapping("/query")
    public EasyUITable findItemByPage(int page, int rows) {
        return itemService.findItemByPage(page, rows);
    }

    /**
     * 商品新增
     * url: http://localhost/item/save
     * 参数: 整个表单进行提交 使用对象接收
     * 返回值: SysResult
     */
    @RequestMapping("/save")
    public SysResult saveItem(Item item, ItemDesc itemDesc) {
        itemService.saveItem(item, itemDesc);
        return SysResult.success();
        /**
         * try {
         * itemService.saveItem(item);
         * return SysResult.success();
         * } catch (Exception e) {
         * e.printStackTrace();
         * return SysResult.fail();
         * }
         */
    }

    /**
     * 商品更新
     * url: http://localhost/item/update
     * 参数: 整个表单进行提交 使用对象接收
     * 返回值: SysResult
     */
    @RequestMapping("/update")
    public SysResult updateItem(Item item, ItemDesc itemDesc) {
        itemService.updateItem(item, itemDesc);
        return SysResult.success();
    }

    /**
     * 商品删除
     * url: http://localhost/item/delete
     * 参数: ids: 1,2,n
     * 返回值: SysResult
     */
    @RequestMapping("/delete")
    public SysResult deleteItems(Long[] ids) {
        itemService.deleteItems(ids);
        return SysResult.success();
    }

    /**
     * 业务: 实现商品的上架/下架
     * url地址: /item/updateStatus/2
     * 参数:  状态码信息/ids
     * 返回值: SysResult对象
     */
    @RequestMapping("/updateStatus/{status}")
    public SysResult updateStatus(@PathVariable Integer status, Long... ids) {
        itemService.updateStatus(ids, status);
        return SysResult.success();
    }

    /**
     * 根据商品id 检索商品详细信息
     * url: /item/query/item/desc/123456
     * 参数: result风格获取数据
     * 返回值: SysResult对象
     */
    @RequestMapping("/query/item/desc/{itemId}")
    public SysResult findItemDescById(@PathVariable Long itemId) {
        ItemDesc itemDesc = itemService.findItemDescById(itemId);
        return SysResult.success(itemDesc);
    }

}
